#ifndef __BASECAMERA_H__
#define __BASECAMERA_H__

#include "../Header/Header.h"

class BaseCamera
{
protected:
	Vector3 m_v3Position;
	__FLOAT m_fRotX, m_fRotY, m_fRotZ;
	Matrix m_maLocalM;
	Matrix m_maProjection;
	__BOOL m_bIsChanged;
	virtual Matrix GetModelMatrix() = 0;
public:
	BaseCamera();
	virtual ~BaseCamera();
	virtual __VOID SetPosition(__FLOAT x, __FLOAT y, __FLOAT z);
	virtual __VOID SetRotation(__FLOAT x, __FLOAT y, __FLOAT z);

	virtual __VOID MoveForward(__FLOAT delta)=0;
	virtual __VOID MoveBackward(__FLOAT delta)=0;
	virtual __VOID MoveLeft(__FLOAT delta)=0;
	virtual __VOID MoveRight(__FLOAT delta)=0;

	virtual __VOID RotateUp(__FLOAT angle)=0;
	virtual __VOID RotateDown(__FLOAT angle)=0;
	virtual __VOID RotateLeft(__FLOAT angle)=0;
	virtual __VOID RotateRight(__FLOAT angle)=0;

	virtual Matrix GetProjectionMatrix()=0;
	virtual Matrix GetViewMatrix()=0;
};

#endif